iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0

大家會不會點好奇,什麼時候方法要用 GET 什麼時候要用 POST / PUT,

或是為什麼會這樣設計 API 呢?

今天我們就來介紹一下 RESTful API/images/emoticon/emoticon08.gif

什麼是 RESTful API

以下是對於 REST 維基百科的介紹 :

REST (Representational state transfer) is a software architectural style that was created to guide the design and development of the architecture for the World Wide Web. REST defines a set of constraints for how the architecture of an Internet-scale distributed hypermedia system, such as the Web, should behave. The REST architectural style emphasises the scalability of interactions between components, uniform interfaces, independent deployment of components, and the creation of a layered architecture to facilitate caching of components to reduce user-perceived latency, enforce security, and encapsulate legacy systems.[1]

也就是說,REST 是一個網路互相傳遞資訊所使用的一種規則,旨在引導設計和開發像全球資訊網(World Wide Web)這樣的互聯網規模的分散式超媒體系統的架構。

它闡述了一組約束條件,指導此類系統應該如何運作,強調了互聯性的可擴展性。

另外 REST 也強調在系統中使用一致的接口設計,這有助於簡化組件之間的互動,使其更容易瞭解和使用。

同時,它鼓勵組件的獨立部署,這意味著不同部分可以獨立開發和更新,提高了系統的靈活性。

以下 REST 架構風格的一些原則。

RESTful API 設計原則

  1. URI 使用名詞而不是動詞。

  2. 將要對資源要做的事寫在方法。

    1. 取得書單列表

      1. 非 RESTful API:

        /getAllBooks
        
      2. RESTful API:

        GET /books
        
    2. 新增書單

      1. 非 RESTful API:

        /addNewBook
        
      2. RESTful API:

        POST /book
        
    3. 刪除某書籍

      1. 非 RESTful API:

        /deleteBook
        
      2. RESTful API:

        DELETE /book
        

    看到以上的範例的差別了嗎?

    使用 RESTful API 的話,路由只會使用名詞,然後依據不同的方法,

    來決定要做的事情是什麼。

  3. 支援多種 Content Types 格式,目前主流是使用 JSON 來進行資料交換。

請求資源的方法

以上提到 RESTful API 將要對資源要做的事寫在方法裡面,

那個方法大概是用在什麼地方呢?

以下分享幾個比較常會使用到的請求方法。

  • GET
    • 取得資源,不會有 request.body,如果有需要篩選的請求通常會帶參數在 URI 上。
  • POST
    • 新增資源。
  • PUT
    • 修改資源。
  • PATCH
    • 修改部分資源。
  • DELETE
    • 刪除資源。

以上就是對 RESTful API 基本的介紹及概念,

如果想深入了解也可以看底下的參考資源哦~

參考資源:


上一篇
Day 21 - 身分驗證與授權:實作使用者註冊和登入系統(下)
下一篇
Day 23 - 實例專案:構建一個簡單的書單列表(上)
系列文
30 天架設 Node.js - Express 框架:快速學習之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言